Skip to content

op-interop-filter: Service skeleton with flags and metrics#18395

Closed
karlfloersch wants to merge 2 commits intoethereum-optimism:developfrom
karlfloersch:interop-filter-base
Closed

op-interop-filter: Service skeleton with flags and metrics#18395
karlfloersch wants to merge 2 commits intoethereum-optimism:developfrom
karlfloersch:interop-filter-base

Conversation

@karlfloersch
Copy link
Copy Markdown
Contributor


Description

Adds the op-interop-filter service skeleton:

  1. CLI flags with StringSliceFlag for --l2-rpcs (chain ID queried from RPC)
  2. Service lifecycle (start/stop) following op-service patterns
  3. RPC server with supervisor namespace for checkAccessList
  4. Metrics with doc subcommand for documentation
  5. Stub backend (actual logic in follow-up PR)

This service validates interop executing messages for op-geth/op-reth transaction filtering. Any reorg triggers failsafe which disables all interop transactions.

Tests

Unit tests will be added in the follow-up logic PR. This skeleton PR focuses on service structure.

@wiz-inc-a178a98b5d
Copy link
Copy Markdown

wiz-inc-a178a98b5d Bot commented Nov 27, 2025

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities -
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations 1 Low
SAST Finding SAST Findings -
Total 1 Low

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension.

@karlfloersch karlfloersch marked this pull request as ready for review November 27, 2025 06:18
@karlfloersch karlfloersch requested review from a team and smartcontracts November 27, 2025 06:18
@pcw109550
Copy link
Copy Markdown
Member

/ci authorize 5138bbd

opsuperchain and others added 2 commits December 1, 2025 13:38
* feat(op-interop-filter): add service skeleton

Add op-interop-filter service scaffolding:

**Core structure:**
- flags/flags.go: CLI flag definitions with L2 RPC parsing
- flags/flags_test.go: Unit tests for flag parsing
- filter/config.go: Configuration struct and parsing
- filter/service.go: Service lifecycle management
- filter/frontend.go: RPC handlers (supervisor and admin)
- filter/backend.go: Stub backend (returns ErrUninitialized)
- metrics/metrics.go: Prometheus metrics interface and implementation
- cmd/main.go: Application entry point

**Build infrastructure:**
- justfile and Makefile for building
- docker-bake.hcl target
- Dockerfile builder and target stages
- Dockerfile.dockerignore allowlist entry

The service compiles and starts but CheckAccessList returns
ErrUninitialized until the actual implementation is added.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor(op-interop-filter): align with op-faucet and op-interop-mon patterns

- Change --l2-rpcs to StringSliceFlag (query chain ID from RPC)
- Remove custom ParseL2RPCs parsing and tests
- Add doc subcommand for metrics documentation
- Add Document() method to metrics
- Fix NewMetrics() to take procName parameter
- Remove Required: true from flag (use CheckRequired only)
- Use "message" key in log.Crit for consistency

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(op-interop-filter): use v0.0.0 version to match other services

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude <noreply@anthropic.com>
@karlfloersch
Copy link
Copy Markdown
Contributor Author

karlfloersch commented Dec 1, 2025

Closing this PR, continuing in #18456 . Recreating PR from upstream branch instead of fork to fix CI attestation permissions

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants